//https://www.bilibili.com/video/BV1d54y1f7B3/?spm_id_from=333.337.search-card.all.click&vd_source=d6fe65f095f01f05591e89d810720ccc
// 2024-10-18


import java.util.Arrays;
import java.util.Scanner;

public class P002_统计素数个数_空间换时间 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        System.out.println(fun(n));
    }

    // 给个参数n，统计n以内包括n素数有多少个
    private static int fun(int n) {
        boolean[] map = new boolean[n+1];//布尔数组，标记1-n的数哪些是合素（true）。
        int count = 0;
        for (int i = 2;i <= n;i++) {
            if (!map[i]) {
                count++;
                for (int j = i * i; j <= n;j += i)   //j就是合素的标记位,j += i 递增i的倍数
                    map[j] = true;
            }
        }

        return count;
    }


}
